package com.aaa.sts.service;

import com.aaa.common.entity.Store;
import com.aaa.common.vo.Page;
import com.aaa.common.vo.StoreRegisterStatisticsVO;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * (Store)表服务接口
 *
 * @author makejava
 * @since 2025-09-16 09:55:22
 */
public interface StoreService {

    String selectStoreName(Integer storeId);

    /**
     * 查询店铺绑定人数
     * @return
     */
    int queryByUserId(Integer storeId);

    List<Store> selectAllStore(String storeName);
    List<Store> selectStoreByStoreIdAndUserId(Integer storeId, Integer userId);

    List<Store> selectStoreById();

    /**
     * 按月份统计商家入驻数量
     *
     * @return 包含月份和对应入驻数的统计列表
     */
    List<StoreRegisterStatisticsVO> selectStoreNumberByMonth();

    /**
     * 查询商家入驻总数
     *
     * @return 商家总数
     */
    Integer selectAllStoreNumber();

    /**
     * 查询矩形区域内的店铺并计算到区域中心的距离
     *
     * @param minLng 最小经度
     * @param maxLng 最大经度
     * @param minLat 最小纬度
     * @param maxLat 最大纬度
     * @return 包含距离信息的店铺列表
     */
    List<Store> getStoresInRectangle(Float minLng, Float maxLng, Float minLat, Float maxLat);
    List<Store> getStoresInRectangleAndAddress(
            Float minLng, Float maxLng, Float minLat, Float maxLat, String address);


    /**
     * 通过ID查询单条数据
     *
     * @param storeId 主键
     * @return 实例对象
     */
    Store queryById(Integer storeId);


    /**
     * 查询当前用户店铺
     *
     * @param queryDTO 筛选条件
     * @return 店铺列表
     */
    /*PageInfo selectMySelfStore(StoreQueryDTO queryDTO);*/

    /**
     * 分页查询
     *
     * @param page 筛选条件
     * @return 查询结果
     */
    PageInfo queryByPage(Page<Store> page);

    List<Store> selectMyStore(Store store);
    /**
     * 新增数据
     *
     * @param store 实例对象
     * @return 实例对象
     */
    Store insert(Store store);

    /**
     * 修改数据
     *
     * @param store 实例对象
     * @return 实例对象
     */
    Store update(Store store);

    /**
     * 通过主键删除数据
     *
     * @param storeId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer storeId);

}
